#ifndef __SERVERCONFIG_H__
#define __SERVERCONFIG_H__

/*
 * 文件介绍
 * ServerConfig.h 和 ServerConfig.cpp 作为配置参数管理单例类专用
 *
 * 作者：李江军
 * 日期：2022-08-07
 * 功能：配置参数管理单例类
 * 介绍：该单例类作为工程中公共参数管理，使用时可以将调用接口获取参数，同时参数接口实现线程安全。
 */

#include <mutex>

#include "nlohmann/json.hpp"
using Json = nlohmann::json;

#define CFGAPP ServerConfig::instance()

class ServerConfig
{
public:
    static ServerConfig* instance();
    ~ServerConfig();

    std::string dataPath();
    std::string userFileName();

private:
    ServerConfig();

    void readSysConfig();
private:
    static ServerConfig*    m_self;
    static std::mutex       m_selfMutex;

    std::string             m_sysName;
    Json                    m_sysConfig;
};

#endif //__SERVERCONFIG_H__